/******************************************************************************
 * (C) Copyright 2013 Atech-Automotive
 * FILE NAME:    uds_diag_callback.h
 * DESCRIPTION:
 * 
 * DATE BEGUN:   2015/05/05
 * BY:           hui.pang
 * PRODUCT NAME:
 * APPLICATION:
 * TARGET H/W:
 * DOC REF:
 *****************************************************************************
 */

#ifndef _UDS_DIAG_CALLBACK_H_
#define _UDS_DIAG_CALLBACK_H_

/*****************************************************************************
**#include 
*****************************************************************************/
#include "system.h"
#include "uds_diag_drv.h"

#pragma CODE_SEG OTHER_ROM

/*****************************************************************************
**  typedef
*****************************************************************************/
typedef enum
{
	DIAG_E2_ADDR_VIN,
    DIAG_E2_ADDR_Application_Fingerprint_INFOR,
	
}UdsAppl_WriteE2Type_E;

typedef struct
{
    UINT8 high;
    UINT8 middle;
    UINT8 low;
    UINT8 status;  
    
} DTC_Data_S;

/*****************************************************************************
** Variables
*****************************************************************************/


/*****************************************************************************
** Constants
*****************************************************************************/


/*****************************************************************************
** Function prototypeseb
*****************************************************************************/
/****************************************************************************/
/**
 * Function Name: UdsCallback_SendFrame
 * Description: none
 *
 * Param:   none
 * Return:  none
 * Author:  2015/05/05, hui.pang create this function
 ****************************************************************************/
extern BOOL UdsCallback_SendFrame( UINT32 u32_id, UINT8 * p_u8_data, UINT8 u8_length );

/****************************************************************************/
/**
 * Function Name: UdsCallback_CalcKey
 * Description: none
 *
 * Param:   none
 * Return:  none
 * Author:  2015/05/08, hui.pang create this function
 ****************************************************************************/
extern UINT32 UdsCallback_CalcKey( UINT32 Seed , UINT8 access);

/****************************************************************************/
/**
 * Function Name: UdsCallback_CalcAtechKey
 * Description: none
 *
 * Param:   none
 * Return:  none
 * Author:  2015/05/08, hui.pang create this function
 ****************************************************************************/
extern UINT32 UdsCallback_CalcAtechKey( UINT32 u32_seed );

/****************************************************************************/
/**
 * Function Name: UdsCallback_OperationTimeOutClearFlag
 * Description: none
 *
 * Param:   none
 * Return:  none
 * Author:  2015/05/08, hui.pang create this function
 ****************************************************************************/
extern void UdsCallback_OperationTimeOutClearFlag( void );

/****************************************************************************/
/**
 * Function Name: UdsCallback_GetRandomValueU32
 * Description: none
 *
 * Param:   none
 * Return:  none
 * Author:  2015/05/28, hui.pang create this function
 ****************************************************************************/
extern UINT32 UdsCallback_GetRandomValueU32( void );

/****************************************************************************/
/**
 * Function Name: UdsCallback_WriteDataToE2
 * Description: none
 *
 * Param:   none
 * Return:  none
 * Author:  2015/05/29, hui.pang create this function
 ****************************************************************************/
extern BOOL UdsCallback_WriteDataToE2( UdsAppl_WriteE2Type_E type, 
                                       UINT32 * p_u32_data );

/****************************************************************************/
/**
 * Function Name: UdsCallBack_GetE2CompareState
 * Description: none
 *
 * Param:   none
 * Return:  TRUE  - E2 Compare OK
 *          FALSE - E2 Compare ERROR
 * Author:  2016/07/11, hui.liu create this function
 ****************************************************************************/
BOOL UdsCallBack_GetE2CompareState( UdsAppl_WriteE2Type_E type, 
                                                   UINT32* p_u32_data,
                                                   UINT32* p_u32_backup);

/****************************************************************************/
/**
 * Function Name: UdsCallBack_ReadE2Init
 * Description: none
 *
 * Param:   none
 * Return:  TRUE  - EE Reading is finished
 *          FALSE - Don't ready to read EE
 * Author:  2015/06/01, hui.pang create this function
 ****************************************************************************/
extern BOOL UdsCallBack_ReadE2Init( void );

/****************************************************************************/
/**
 * Function Name: UdsCallBack_ClearAllDTCs
 * Description: none
 *
 * Param:   none
 * Return:  TRUE  - Clearing is finished
 *          FLASE - Clearing failure
 * Author:  2015/06/15, hui.pang create this function
 ****************************************************************************/
extern BOOL UdsCallBack_ClearAllDTCs( void );

/****************************************************************************/
/**
 * Function Name: UdsCallBack_StartStopDiag
 * Description: none
 *
 * Param b_start_flag: ON  - Start Diag
 *                     OFF - Stop Diag
 * Return:  none
 * Author:  2015/06/18, hui.pang create this function
 ****************************************************************************/
extern void UdsCallBack_StartStopDiag( BOOL b_start_flag );

/****************************************************************************/
/**
 * Function Name: UdsCallBack_GetE2IdleSts
 * Description: none
 *
 * Param:   none
 * Return:  TRUE  - E2 Idle
 *          FALSE - E2 Busy
 * Author:  2015/06/18, hui.pang create this function
 ****************************************************************************/
extern BOOL UdsCallBack_GetE2IdleSts( UdsAppl_WriteE2Type_E type, 
                                           UINT32 *p_u32_buff );

extern UINT8 UdsCallBack_GetDtcIndex(UINT8 high, UINT8 middle, UINT8 low);

/****************************************************************************/
/**
 * Function Name: UdsCallBack_GetDtcListAndSts
 * Description: none
 *
 * Param:   none
 * Return:  none
 * Author:  2015/09/02, hui.pang create this function
 ****************************************************************************/
DTC_Data_S UdsCallBack_GetDtcListAndSts( UINT16 u16_index);

/****************************************************************************/
/**
 * Function Name: UdsCallBack_CommCtrl
 * Description: none
 *
 * Param:   none
 * Return:  none
 * Author:  2015/09/18, hui.pang create this function
 ****************************************************************************/
extern void UdsCallBack_CommCtrl( Uds_CanCommCtrlSts_E type, BOOL b_flag );
extern BOOL UdsCallBack_ClearSingleDTC( UINT16 DtcIndex );
extern UINT8 UdsCallBack_GetSnapshotDtcRecodeSts(UINT16 u16_dtc_index , UINT8* pBuf);
extern UINT8 UdsCallBack_GetExtendDataDtcRecode(UINT16 u16_dtc_index , UINT8* pBuf);
extern void UdsCallback_JumpBootload(void);
extern void UdsCallback_EcuReset(void); 

/****************************************************************************/
/**
 * Function Name: UdsCallBack_ReadMemory
 * Description: none
 *
 * Param:   none
 * Return:  none
 * Author:  2016/10/17, hui.liu create this function
 ****************************************************************************/
BOOL UdsCallBack_ReadMemory( UINT32 u32_addr, UINT8 *p_u8_data, UINT16 u16_len );

/****************************************************************************/
/**
 * Function Name: UdsCallBack_WriteMemory
 * Description: none
 *
 * Param:   none
 * Return:  none
 * Author:  2016/10/17, hui.liu create this function
 ****************************************************************************/
BOOL UdsCallBack_WriteMemory( UINT32 u32_addr, UINT8 *p_u8_data, UINT16 u16_len );

/*****************************************************************************
** other
*****************************************************************************/

#pragma CODE_SEG  DEFAULT

/****************************************************************************/

#endif	//_UDS_DIAG_CALLBACK_H_

/*****************************************************************************
** End File
*****************************************************************************/

